-- 设置Leader键
vim.g.mapleader = " "
vim.g.maplocalleader = " "

-- 重命名映射
local map = vim.keymap.set
local opt = { noremap = true, silent = true }

-- Ctrl-S保存
map("", "<C-s>", "<Esc>:w<CR>", opt)
map("i", "<C-s>", "<Esc>:w<CR>", opt)

-- 窗口分屏创建
map("n", "<leader>ss", ":vsp<CR>")
map("n", "<leader>sx", ":sp<CR>")

-- 关闭当前窗口
map("n", "<leader>sw", "<C-w>c", opt)

-- 关闭其他窗口
map("n", "<leader>so", "<C-w>o", opt)

-- 重置窗口尺寸
map("n", "<leader>s=", "<C-w>=", opt)

-- 窗口分屏移动
map("", "<C-h>", "<C-w>h", opt)
map("", "<C-j>", "<C-w>j", opt)
map("", "<C-k>", "<C-w>k", opt)
map("", "<C-l>", "<C-w>l", opt)

-- 修改窗口尺寸
map("", "<S-Up>", ":resize +2<CR>", opt)
map("", "<S-Down>", ":resize -2<CR>", opt)
map("", "<S-Left>", ":vertical resize -2<CR>", opt)
map("", "<S-Right>", ":vertical resize +2<CR>", opt)

-- "" for mode : n|v|o
-- 光标移动行首,行尾::verbose nmap
map("", "H", "^", opt)
map("", "L", "$", opt)

-- 光标快速上下移动
map("", "J", "5j", opt)
map("", "K", "5k", opt)

-- 整行上下移动
map("n", "<A-Up>", ":m -2<CR>", opt)
map("n", "<A-Down>", ":m +1<CR>", opt)
map("v", "<A-Up>", ":m '<-2<CR>gv=gv", opt)
map("v", "<A-Down>", ":m '>+1<CR>gv=gv", opt)

-- map("n", ">", "<cmd>><CR>", opt)
-- map("n", "<", "<cmd><<CR>", opt)
map("v", ">>", ">gv", opt)
map("v", "<<", "<gv", opt)

-- 取消高亮
map("n", "<leader>nh", ":nohl<CR>", opt)

-- 重新加载配置
map("", "<F12>", ":luafile %<CR>", opt)
